package org.jeecg.modules.service;

/**
 * MQTT服务接口
 * @author tanxy
 * @date 2022/11/27 21:56
 * @return null
 */
public interface MqttService {

    /**
     * 启动MQTT连接服务
     *
     * @throws Exception 启动失败时，抛出该异常
     */
    void start() throws Exception;

    /**
     * 设置消息监听器
     *
     * @param listener 消息监听器
     */
    void setListener(MessageListener listener);

    /**
     * 连接MQTT代理是否成功
     *
     * @return true 连接成功， false：连接失败
     */
    boolean isConnected();

    /**
     * 发布消息
     *
     * @param topic 主题
     * @param msg   消息
     * @throws Exception 发布消息失败时，抛出该异常
     */
    void publish(String topic, String msg) throws Exception;

    /**
     * 发布消息
     *
     * @param topic 主题
     * @param msg   消息
     * @throws Exception 发布消息失败时，抛出该异常
     */
    void publish(String topic, byte[] msg) throws Exception;

    /**
     * 停止MQTT连接服务
     */
    void stop();
}
